package com.eastfair.home.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.eastfair.boot.request.PageParams;
import com.eastfair.boot.service.SuperService;
import com.eastfair.home.dto.BuilderRepairReportDTO;
import com.eastfair.home.entity.BuilderRepairReport;
import com.eastfair.home.vo.BuilderRepairReportVO;
import com.eastfair.venueservice.dto.RepairReportDTO;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 业务接口
 * 搭建商报修申请
 * </p>
 *
 * @author dqq
 * @date 2022 -11-24
 */
public interface BuilderRepairReportService extends SuperService<BuilderRepairReport> {

    /**
     * 查询搭建商报修申请列表VO.
     *
     * @param pageParams the page params
     * @return the list
     */
    Page<BuilderRepairReportVO> listBuilderRepairReportVO(PageParams<BuilderRepairReportDTO> pageParams);

    /**
     * 查询搭建商报修申请列表.
     *
     * @param query the query
     * @return the list
     */
    List<BuilderRepairReportVO> listBuilderRepairReportVO(BuilderRepairReportDTO query);

    /**
     * 查询搭建商报修申请列表.
     *
     * @param query the repair report dto
     * @return the list
     */
    List<BuilderRepairReport> listBuilderRepairReport(BuilderRepairReportDTO query);

    /**
     * 报修单号获取搭建商报修申请.
     *
     * @param repairReportNumber the repair report number
     * @return the by report repair number
     */
    BuilderRepairReport getByReportRepairNumber(String repairReportNumber);

    /**
     * 报修单号获取搭建商报修申请VO.
     *
     * @param repairReportNumber the repair report number
     * @return the vo by report repair number
     */
    BuilderRepairReportVO getVOByReportRepairNumber(String repairReportNumber);

    /**
     * 保存搭建商报修申请.
     *
     * @param builderRepairReportDTO the repair report dto
     * @return the repair report
     */
    BuilderRepairReport saveBuilderRepairReport(BuilderRepairReportDTO builderRepairReportDTO);

    /**
     * 更新搭建商报修申请.
     *
     * @param builderRepairReportDTO the repair report dto
     * @return the repair report
     */
    BuilderRepairReport updateBuilderRepairReport(BuilderRepairReportDTO builderRepairReportDTO);

    /**
     * 取消搭建商报馆申请.
     *
     * @param repairReportNumber the repair report number
     * @return the boolean
     */
    boolean cancelBuilderRepairReport(String repairReportNumber);

    /**
     * 更新搭建商维修申请检测结果.
     *
     * @param builderRepairReportDTO the repair report dto
     * @return the boolean
     */
    boolean updateCheckResult(BuilderRepairReportDTO builderRepairReportDTO);

    /**
     * 更新搭建商报修申请为已报馆.
     *
     * @param repairReportNumber the repair report number
     * @return the boolean
     */
    boolean updateReportVenue(String repairReportNumber);

    /**
     * 更新搭建商报修申请为已完成.
     *
     * @param builderRepairReportDTO the repair report dto
     * @return the boolean
     */
    boolean updateComplete(BuilderRepairReportDTO builderRepairReportDTO);

    /**
     * 更新是否预定了服务.
     *
     * @param builderRepairReportDTO the builder repair report dto
     * @return the boolean
     */
    boolean updateIsBookService(BuilderRepairReportDTO builderRepairReportDTO);

    /**
     * 更新需赔付场馆金额.
     *
     * @param builderRepairReportDTO the builder repair report dto
     * @return the boolean
     */
    boolean updateCompensateVenueAmount(BuilderRepairReportDTO builderRepairReportDTO);
}
